GitHub Flowに基づくClaude CodeとSerenaを用いたHuman in the loop開発
概要
速度よりも安全を重視したHITLを行います.
HITLにおける人間の負担(レビューコスト)を抑えるために,CLAUDE.mdでLLMにリポジトリごとの指示を与えます.
大規模なコードでもLLMが破綻なく保守・変更しやすくするために,コードベース全体を踏まえた情報提供をLLMに行うMCPサーバであるSerenaを用います.
LLMの動作を安定させるために,作業をシンプルにします.
具体的には,作業過程で目的がぶれてマルチタスク化するのを防ぐための(主に人間への)制約としてGitHub Flowを導入します.
LLMに依頼する作業を,一つのissueとして作業実施前に整理する ※ 複数の作業を1スレッドに混ぜないことで,(1)コンテクストウィンドウの溢れを防ぎ,(2)目的の混乱を人間やLLMに生じることを防ぐことが目的
I. 前準備
MCPのSerenaをClaude Codeに追加
CLAUDE.mdの整備
基本的な作業手順を記述する.
II. 作業手順
1. Issue作成段階
Claude Codeに依頼する文章をIssueに登録する.
パターンA:すぐに思いつく場合
与える予定のプロンプトをGitHubのissueに書く
パターンB:Claude Codeに依頼する場合
Claude Codeに調査・相談の上,issues/以下にmarkdownファイルとしてissueを書いてもらう
人力で編集し,GitHubのissueに登録する
2. GitHub Flowに基づく実装
2.1. 作業ブランチの作成
日付とissuee番号を使うと簡単に重複しないブランチ名を作れる(yymmdd-issue?)
2.2. 以下のようなプロンプトで指示
code:通常時.txt
CLAUDE.mdに従い,以下の作業に取り組んでください.
<ここにissueの文面を記述>
code:issue.mdがローカルにある場合.txt
CLAUDE.mdに従い,issues/issue1.mdに対応してください.
コードの変更を伴わないコマンド(mkdir,Serena findなど)は自動承認
コード書き換えや実行は手動で承認することで,技術的負債を軽減 2.4. 作業後に作業ブランチでpushしてプルリクエストを作成
プルリクエストの素案はClaude Codeに作成を依頼
素案を確認・修正ののちGitHubでプルリクエスト作成
問題なければマージして,ブランチ削除して,対応issueをclose
2.5. ローカルリポジトリの整理
mainリポジトリにマージ結果をpullして,作業ブランチを削除